{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第二次练习\n",
    "\n",
    "+ 请**务必**交到**exer2**文件夹下，谢绝交到master下\n",
    "+ 请**不要改动**任何文件，拜托\n",
    "+ 请在10月16日前提交。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 食物和热量\n",
    "\n",
    "已知，以下食物每100g的千卡路里如下：\n",
    "\n",
    "小米粥 45  \n",
    "粗粮馒头 223  \n",
    "全麦面包 235  \n",
    "瘦猪肉 143  \n",
    "鸡翅 194  \n",
    "培根 181  \n",
    "火腿肠 212 \n",
    "\n",
    "建立一个空的字典，把上述键值对依此添加进去。 \n",
    "通过循环形式，显示，如“我吃了二两”+“小米粥”，“增加了”+“45”千卡路里。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "我吃了二两小米粥    增加了45    千卡路里\n",
      "我吃了二两粗粮馒头    增加了223    千卡路里\n",
      "我吃了二两全麦面包    增加了235    千卡路里\n",
      "我吃了二两瘦猪肉    增加了143    千卡路里\n",
      "我吃了二两鸡翅    增加了194    千卡路里\n",
      "我吃了二两培根    增加了181    千卡路里\n",
      "我吃了二两火腿肠    增加了212    千卡路里\n"
     ]
    }
   ],
   "source": [
    "python_words = {}\n",
    "python_words['小米粥']='45'\n",
    "python_words['粗粮馒头']='223'\n",
    "python_words['全麦面包']='235'\n",
    "python_words['瘦猪肉']='143'\n",
    "python_words['鸡翅']='194'\n",
    "python_words['培根']='181'\n",
    "python_words['火腿肠']='212'\n",
    "for word, meaning in python_words.items():\n",
    "    print(\"我吃了二两%s  \" % word + \"  增加了%s  \" % meaning + \"  千卡路里\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 运动和消耗\n",
    "常见三种运动的消耗热量表：  \n",
    "慢走 (一小时4公里) 255 卡  \n",
    "慢跑 (一小时9公里) 655 卡  \n",
    "羽毛球（一小时） 440 卡  \n",
    "\n",
    "模仿课件3-dict_set中的cell[9]做个刷题，直到答对而且答完为止。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "which sport cost 255卡?\n",
      "\n",
      "慢走（一小时4公里）  慢跑（一小时9公里）  羽毛球（一小时）  \n",
      "- 慢走（一小时4公里）\n",
      "you are right!\n",
      "\n",
      "which sport cost 655卡?\n",
      "\n",
      "慢走（一小时4公里）  慢跑（一小时9公里）  羽毛球（一小时）  \n",
      "- 慢跑（一小时9公里）\n",
      "you are right!\n",
      "\n",
      "which sport cost 440卡?\n",
      "\n",
      "慢走（一小时4公里）  慢跑（一小时9公里）  羽毛球（一小时）  \n",
      "- 慢跑（一小时9公里）\n",
      "please try again!\n",
      "\n",
      "慢走（一小时4公里）  慢跑（一小时9公里）  羽毛球（一小时）  \n",
      "-  羽毛球（一小时）\n"
     ]
    },
    {
     "ename": "KeyError",
     "evalue": "' 羽毛球（一小时）'",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-1-18a01274176f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m     18\u001b[0m         \u001b[0mguess_num\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"- \"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m     19\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m---> 20\u001b[0;31m         \u001b[1;32mif\u001b[0m \u001b[0mcalorie_cost\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mguess_num\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[0mmeaning\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     21\u001b[0m             \u001b[0mcorrect\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m     22\u001b[0m             \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"you are right!\\n\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyError\u001b[0m: ' 羽毛球（一小时）'"
     ]
    }
   ],
   "source": [
    "calorie_cost = {'慢走（一小时4公里）': '255卡',\n",
    "             '慢跑（一小时9公里）':'655卡',\n",
    "             '羽毛球（一小时）':'440卡',}\n",
    "\n",
    "def show_all(calorie_cost):\n",
    "    display_message = \"\"\n",
    "    for word in calorie_cost.keys():\n",
    "        display_message += word + '  '\n",
    "    print(display_message)\n",
    "    \n",
    "for meaning in calorie_cost.values():\n",
    "    \n",
    "    correct = False\n",
    "    print(\"which sport cost \"+ meaning + '?\\n')\n",
    "    while not correct:\n",
    "        \n",
    "        show_all(calorie_cost)\n",
    "        guess_num=input(\"- \")\n",
    "        \n",
    "        if calorie_cost[guess_num] == meaning:\n",
    "            correct=True\n",
    "            print(\"you are right!\\n\")\n",
    "        else:\n",
    "            print(\"please try again!\\n\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dictionary: A collection of key-value pairs.\n",
      "Function: A named set of instructions that defines a set of actions in Python.\n",
      "List: A collection of values that are not connected, but have an order.\n"
     ]
    }
   ],
   "source": [
    "# 对dict来说，输出时不按任何顺序\n",
    "# 可以通过sorted()函数使结果有序输出\n",
    "python_words = {'list': 'A collection of values that are not connected, but have an order.',\n",
    "                'dictionary': 'A collection of key-value pairs.',\n",
    "                'function': 'A named set of instructions that defines a set of actions in Python.',\n",
    "                }\n",
    "\n",
    "for word in sorted(python_words.keys()):\n",
    "    print(\"%s: %s\" % (word.title(), python_words[word]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 江西最高山\n",
    "\n",
    "[江西最高的十座山]{http://jx.ifeng.com/a/20160628/4693979_0.shtml}\n",
    "\n",
    "请模仿上例，创建包含山名和海拔的dict，并按如下形式循环输出：  \n",
    "“黄岗山海拔2157.8米”"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "九岭头海拔1794米\n",
      "五虎岗海拔1891米\n",
      "军峰山海拔1760.9米\n",
      "玉京峰海拔1819.9米\n",
      "过风坳海拔1887米\n"
     ]
    }
   ],
   "source": [
    "def show_moutain(calorie_cost):\n",
    "    for word in sorted(calorie_cost.keys()):\n",
    "        print(\"%s海拔%s米\" % (word.title(),calorie_cost[word]))\n",
    "        \n",
    "jx_moutain={'军峰山':'1760.9',\n",
    "           '九岭头':'1794',\n",
    "           '玉京峰':'1819.9',\n",
    "           '过风坳':'1887',\n",
    "           '五虎岗':'1891',}\n",
    "show_moutain(jx_moutain)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 为室友打一波广告\n",
    "请参照课件3-dict_set中的cell[15]“卖室友”吧。  \n",
    "第一层dict的key可自选，如身高、爱好、技能等等。\n",
    "并以以下形式循环输出：  \n",
    "我知道的XXX，TA:  \n",
    "身高：160  \n",
    "爱好：吸猫  \n",
    "技能：python  \n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "我知道XXX, TA:\n",
      "\n",
      "身高：160\n",
      "爱好：吸猫\n",
      "技能：python\n"
     ]
    }
   ],
   "source": [
    "shiyou={'XXX':{'身高':'160','爱好':'吸猫','技能':'python'},\n",
    "       }\n",
    "\n",
    "for name,informations in shiyou.items():\n",
    "    print(\"我知道%s\" %name +', TA:\\n')\n",
    "    print(\"身高：%s\" % informations['身高'])\n",
    "    print(\"爱好：%s\" %informations['爱好'])\n",
    "    print(\"技能：%s\"%informations['技能'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
